/**
 * 集群模块控制器
 * 
 * @author zhongfuhua
 */

var sliceGroupApp = angular.module("sliceGroupApp", ["sliceGroupServiceApp", "sliceServiceApp", "jobServiceApp", "ngJsTree", "ngSelect2"]);

sliceGroupApp.controller("sliceGroupCtrl", [
		"$scope",
		"commonService",
		"sliceService",
		"sliceGroupService",
		"jobService",
		"$timeout",
		"$log",
		function($scope, commonService, sliceService, sliceGroupService, jobService, $timeout, $log) {
			
			
			// 表格
			$scope.$sliceGroupTable = $('#sliceGroupTable');
			
			// 按钮
			$scope.$sliceGroupAddButton = $('#sliceGroupAddButton');
			$scope.$sliceGroupModButton = $('#sliceGroupModButton');
			$scope.$sliceGroupRemoveButton = $('#sliceGroupRemoveButton');
			
			// 模态框
			$scope.$sliceGroupModal = $('#sliceGroupModal');
			$scope.$sliceModal = $('#sliceModal');
			
			// 表格选中实例对象
			$scope.selectionIds = new Array();
			$scope.selections = new Array();
			
			// 监视isSucce的状态
			$scope.action = null;
			$scope.isSuccess = true;
			$scope.error = null;
			
			// vo
			$scope.sliceGroupVO = {};
			$scope.sliceVO = {};
			$scope.sliceTableCurrent = null;
			
			$scope.jobSelectConfig = {
					minimumResultsForSearch : 1, // 是否打开搜索
					data : [],			 
					placeholder : '如无选项请新增任务'			 // 占位符
			};
			
			ffc.util.watchResult($scope, $timeout);
			
			/**
			 * 
			 * 功能说明:查询数据源
			 * 
			 * @author ZHONGFUHUA
			 * 
			 * @Date 2016年10月25日
			 * 
			 */
			$scope.querySliceGroup = function(){
				$scope.$sliceGroupTable.bootstrapTable("selectPage", 1);  
			}
			
			
			/**
			 * 
			 * 功能说明:查询分片
			 * 
			 * @author ZHONGFUHUA
			 * 
			 * @Date 2016年10月25日
			 * 
			 */
			$scope.querySlice = function(){
				if($scope.sliceTableCurrent != null &&  $scope.sliceTableCurrent != undefined){
					$scope.sliceTableCurrent.bootstrapTable("selectPage", 1);  
				}
			}
			
			
			/**
			 * 
			 * 功能说明:新增修改分片组
			 * 
			 * @author ZHONGFUHUA
			 * 
			 * @Date 2016年10月25日
			 * 
			 */
			$scope.saveSliceGroup = function(){
				if($scope.action=="MOD"){
					sliceGroupService.update($scope.sliceGroupVO, function(result){
						if(!result.result){
							$scope.error = result.msgTitle;
							$scope.isSuccess = false;
							return false;
						}
						new MessageDialog().success("修改成功!!");
						$scope.$sliceGroupModal.modal("hide");
						$scope.querySliceGroup();
					},function(error){
						$scope.error = error;
						$scope.isSuccess = false;
					});
				}else{
					$scope.sliceGroupVO.clusterName = $scope.sliceGroupVO.job.clusterName;
					sliceGroupService.add($scope.sliceGroupVO, function(result){
						if(!result.result){
							$scope.error = result.msgTitle;
							$scope.isSuccess = false;
							return false;
						}
						new MessageDialog().success("添加成功!!");
						$scope.$sliceGroupModal.modal("hide");
						$scope.querySliceGroup();
					},function(error){
						$scope.error = error;
						$scope.isSuccess = false;
					});
				}
			}
			
			/**
			 * 
			 * 功能说明:删除分片组
			 * 
			 * @author ZHONGFUHUA
			 * 
			 * @Date 2016年10月25日
			 * 
			 */
			$scope.deleteSliceGroup = function(){
				new MessageDialog().confirm("确定删除？", function() {
					sliceGroupService.removeList($scope.selections, function(result){
						if(!result.result){
							$scope.error = result.msgTitle;
							$scope.isSuccess = false;
							return false;
						}
						new MessageDialog().alert("删除成功");
						$scope.querySliceGroup();
					},function(error){
						$scope.error = error;
						$scope.isSuccess = false;
					});
			   });
			}
			

			
			/**
			 * 
			 * 功能说明:新增修改分片
			 * 
			 * @author ZHONGFUHUA
			 * 
			 * @Date 2016年10月25日
			 * 
			 */
			$scope.addSlice = function(){
				sliceService.add($scope.sliceVO, function(result){
					if(!result.result){
						$scope.error = result.msgTitle;
						$scope.isSuccess = false;
						return false;
					}
					new MessageDialog().success("添加成功!!");
					$scope.$sliceModal.modal("hide");
					$scope.querySlice();
				},function(error){
					$scope.error = error;
					$scope.isSuccess = false;
				});
			}
			
			/**
			 * 
			 * 功能说明:删除分片
			 * 
			 * @author ZHONGFUHUA
			 * 
			 * @Date 2016年10月25日
			 * 
			 */
			$scope.deleteSlice = function(){
				new MessageDialog().confirm("确定删除？", function() {
					sliceService.remove($scope.sliceVO, function(result){
						if(!result.result){
							$scope.error = result.msgTitle;
							$scope.isSuccess = false;
							return false;
						}
						new MessageDialog().alert("删除成功!!");
						$scope.querySlice();
					},function(error){
						$scope.error = error;
						$scope.isSuccess = false;
					});
			   });
			}
			
			
			/**
			 * 
			 * 功能说明:查询任务组下拉框数据
			 * 
			 * @author ZHONGFUHUA
			 * 
			 * @Date 2016年10月25日
			 * 
			 */
			$scope.queryJobSelect = function(){
				jobService.query({}, function(result){
					if(!result.result){
						$scope.error = result.msgTitle;
						$scope.isSuccess = false;
						return false;
					}
					$scope.jobSelectConfig.data  = new Array();
					angular.forEach(result.dataList, function(data, index, array){
						var option = {
								id : data.id,
								text : data.name,
								clusterName : data.clusterName
						}
						$scope.jobSelectConfig.data.push(option);
					});
					ffc.util.angularApply($scope, $timeout);
				},function(error){
					$scope.error = error;
					$scope.isSuccess = false;
				});
			}
			
			$(function() {
				
				$scope.queryJobSelect();
				
				/**
				 * 
				 * 功能说明:初始化数据源表格
				 * 
				 * @author ZHONGFUHUA
				 * 
				 * @Date 2016年10月25日
				 * 
				 */
				$scope.$sliceGroupTable.bootstrapTable({
					queryParams : function(params) {
						var selfParams = {
							name : $scope.sliceGroupVO.queryName,
							jobId : $scope.sliceGroupVO.queryJobId
						}
						return $.extend({}, params, selfParams);
					},
					ajax : function(render) {
						sliceGroupService.queryPage(render.data, function(result) {
							if(!result.result){
								$scope.error = result.msgTitle;
								$scope.isSuccess = false;
								return false;
							}
							ffc.util.loadTableData(render, result);  
						},function(error){
							$scope.error = error;
							$scope.isSuccess = false;
						});
						$scope.$sliceGroupRemoveButton.prop('disabled', true);
						$scope.$sliceGroupModButton.prop('disabled', true);
					},
					onExpandRow : function(index, row, $detail){
						var sliceTable = $detail.html(
								"<div class=\"table-responsive\">" +
									"<table name='projectSqlRuleTable'></table>" +
								"</div>"
								).find("table");
						
						var columns = [];
						
						columns.push({
							field : "skey",
							title : "分片值",
							width : "70%",
							align : "center",
							classes : "table-column",
							valign : "middle"
						});
						
						columns.push({
							title : "操作",
							width : "30%",
							align : "center",
							classes : "table-column operation",
							valign : "middle",
							formatter : sliceFormatter,
							events : sliceEvents
						});
						
						
						$scope.sliceTableCurrent = sliceTable;
						
						sliceTable.bootstrapTable({
							idField : "id",
							sidePagination: "server",
							columns : columns,
							pagination : true,
							pageList : [5, 10, 20],
							detailView : false,
							queryParamsType : "",
							queryParams : function(params) {
								var selfParams = {
									sliceGroupId : row.id,
									clusterName : row.clusterName
								};
								return $.extend({}, params, selfParams);
							},
							ajax : function(render) {
								sliceService.queryPage(render.data, function(result) {
									if(!result.result){
										$scope.error = result.msgTitle;
										$scope.isSuccess = false;
										return false;
									}
									ffc.util.loadTableData(render, result);  
								},function(error){
									$scope.error = error;
									$scope.isSuccess = false;
								});
							}
						});
					}
				});
				
				/**
				 * 
				 * 功能说明:每次选择时重新获取表格中被选中对象
				 * 
				 * @author ZHONGFUHUA
				 * 
				 * @Date 2016年10月25日
				 * 
				 */
				$scope.$sliceGroupTable.on('check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table',function () {
					$scope.$sliceGroupModButton.prop('disabled', !$scope.$sliceGroupTable.bootstrapTable('getSelections').length);
					$scope.$sliceGroupRemoveButton.prop('disabled', !$scope.$sliceGroupTable.bootstrapTable('getSelections').length);
					$scope.selectionIds = new Array();
					$scope.selections = new Array();
					angular.forEach($scope.$sliceGroupTable.bootstrapTable('getSelections'), function(data, index, array) {
						$scope.selectionIds.push(data.id);
						$scope.selections.push(data);
					});
				})
				
								
				/**
				 * 
				 * 功能说明:每次选择时重新获取表格中被选中对象
				 * 
				 * @author ZHONGFUHUA
				 * 
				 * @Date 2016年10月25日
				 * 
				 */
				$scope.$sliceGroupTable.on('load-success.bs.table', function (data) {
					$('[data-toggle="tooltip"]').tooltip();
				});
				
				
				/**
				 * 
				 * 功能说明:弹出框关闭事件
				 * 
				 * @author ZHONGFUHUA
				 * 
				 * @Date 2016年10月25日
				 * 
				 */
				$scope.$sliceGroupModal.on("hidden.bs.modal",function(){
					$scope.action = null;
					$scope.sliceGroupForm.$setPristine();
					$scope.sliceGroupVO = {};
				});
				
				
				/**
				 * 
				 * 功能说明:弹出框关闭事件
				 * 
				 * @author ZHONGFUHUA
				 * 
				 * @Date 2016年10月25日
				 * 
				 */
				$scope.$sliceModal.on("hidden.bs.modal",function(){
					$scope.action = null;
					$scope.sliceForm.$setPristine();
					$scope.sliceVO = {};
				});
				
				
				/**
				 * 
				 * 功能说明:弹出框打开事件
				 * 
				 * @author ZHONGFUHUA
				 * 
				 * @Date 2016年10月25日
				 * 
				 */
				$scope.$sliceGroupModal.on('shown.bs.modal',function(){
					if($scope.action=="MOD"){
						if($scope.selections.length > 1){
							$scope.$sliceGroupModal.modal("hide");
							new MessageDialog().warning("只能选择一条记录！");
							return false;
						} 
						$scope.sliceGroupVO = angular.copy($scope.selections[0]);
						ffc.util.angularApply($scope, $timeout);
					}
				});
				
				/**
				 * 
				 * 功能说明:格式化表格输出
				 * 
				 * @author ZHONGFUHUA
				 * 
				 * @Date 2016年10月25日
				 * 
				 */
				sliceGroupFormatter = function(value, row, index) {
					return "<button type=\"button\" class=\"btn btn-xs btn-blue\" style=\"margin-right: 3px;\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"添加分片\"><i class=\"glyphicon glyphicon-plus-sign\"></i> 分片</button>";
				}
				
				/**
				 * 
				 * 功能说明:格式化表格输出
				 * 
				 * @author ZHONGFUHUA
				 * 
				 * @Date 2016年10月25日
				 * 
				 */
				sliceFormatter = function(value, row, index) {
					return "<a class=\"operation-del\"><i class=\"glyphicon glyphicon-trash\"></i>删除</a>";
				}
				
				
				/**
				 * 
				 * 功能说明:格式化事件
				 * 
				 * @author ZHONGFUHUA
				 * 
				 * @Date 2016年10月25日
				 * 
				 */
				sliceGroupEvents = {
					'click .btn-blue' : function(e, value, row, index) {
						$scope.sliceVO = {};
						$scope.sliceVO.sliceGroupId = row.id;
						$scope.sliceVO.clusterName = row.clusterName;
						ffc.util.angularApply($scope, $timeout);
						$scope.$sliceModal.modal("show");
					}
				};
				
				/**
				 * 
				 * 功能说明:格式化事件
				 * 
				 * @author ZHONGFUHUA
				 * 
				 * @Date 2016年10月25日
				 * 
				 */
				sliceEvents = {
					'click .operation-del' : function(e, value, row, index) {
						$scope.sliceVO = {};
						angular.copy(row, $scope.sliceVO);
						$scope.deleteSlice();
					}
				};
			});
}]);
